   This file documents ILISP.

   This is edition 0.12 of the ILISP manual for ILISP Version 5.8.

   Copyright (C) 1991,1992,1993 Todd Kaufmann               1993,1994
Ivan Vasquez               1994, 1995, 1996 Marco Antoniotti and Rick
Busdiecker               1996 Marco Antoniotti and Rick Campbell

   Permission is granted to make and distribute verbatim copies of this
manual provided the copyright notice and this permission notice are
preserved on all copies.

   Permission is granted to copy and distribute modified versions of
this manual under the conditions for verbatim copying, provided that
the entire resulting derived work is distributed under the terms of a
permission notice identical to this one.

   Permission is granted to copy and distribute translations of this
manual into another language, under the above conditions for modified
versions, except that this permission notice may be stated in a
translation approved by the Foundation.

Dialects
********

   A "dialect" of lisp is a specific implementation.  For the parts of
Common Lisp which are well specified, they are usually the same.  For
the parts that are not (debugger, top-level loop, etc.), there is
usually the same functionality but different commands.

   ILISP provides the means to specify these differences so that the
ILISP commands will use the specific command peculiar to an
implementation, but still offer the same behavior with the same
interface.

Defining new dialects
=====================

   To define a new dialect use the macro `defdialect'.  For examples,
look at the dialect definitions in `ilisp-acl.el', `ilisp-cmu.el',
`ilisp-kcl.el', `ilisp-luc'.  There are hooks and variables for almost
anything that you are likely to need to change.  The relationship
between dialects is hierarchical with the root values being defined in
`setup-ilisp'.  For a new dialect, you only need to change the
variables that are different than in the parent dialect.

Writing new commands
====================

   Basic tools for creating new commands:
`deflocal'
     Define a new buffer local variable.

`ilisp-dialect'
     List of dialect types.  For specific dialect clauses.

`lisp-symbol'
     Create a symbol.

`lisp-symbol-name'
     Return a symbol's name

`lisp-symbol-delimiter'
     Return a symbol's qualification

`lisp-symbol-package'
     Return a symbol's package

`lisp-string-to-symbol'
     Convert string to symbol

`lisp-symbol-to-string'
     Convert symbol to string

`lisp-buffer-symbol'
     Convert symbol to string qualified for buffer

`lisp-previous-symbol'
     Return previous symbol

`lisp-previous-sexp'
     Return previous sexp

`lisp-def-name'
     Return name of current definition

`lisp-function-name'
     Return previous function symbol

`ilisp-read'
     Read an sexp with completion, arglist, etc

`ilisp-read-symbol'
     Read a symbol or list with completion

`ilisp-completing-read'
     Read from choices or list with completion

Notes:
   * Special commands like arglist should use `ilisp-send' to send a
     message to the inferior LISP.

   * Eval/compile commands should use `eval-region-lisp' or
     `compile-region-lisp'.

Command Index
*************

Commands available via `M-x' prefix.

Variable Index
**************

Variables and hooks of ILISP.

Function Index
**************

Internal functions of ILISP which can be used to write new commands.